草庐IT

C++ 匿名变量

全部标签

javascript - 修改函数内的变量

这个问题在这里已经有了答案:IsJavaScriptapass-by-referenceorpass-by-valuelanguage?(33个答案)关闭8年前。假设我有一个内联脚本标签,它的代码非常简单,如下所示(function(){vartest="Thisisasimpletest";functionmodifyTest(s){s="Modifiedtesttext";};modifyTest(test);console.log(test)//Willstilldisplay"Thisisasimpletest"})();但是如果我使用test=modifyTest(test)

javascript - 变量未定义=真;

我正在对这个恶意JavaScript行进行一些试验:varundefined=true;JavaScript中每个未初始化的变量都有undefined的值,这只是一个保存特殊值'undefined'的变量,所以下面应该执行警报:varundefined=true,x;if(x){alert('ok');}但事实并非如此,我的问题是为什么?在进一步的实验中,我尝试了以下方法:varundefined=true,x=undefined;if(x){alert('ok');}这一次,alert被执行。所以我的问题是...因为在第一个片段中x包含undefined(因为它没有被初始化),为什么

javascript - 在Javascript中,setTimeout中使用的变量范围是什么?

我在函数中使用以下代码:setTimeout("doSomething(var1)",10000);但是,我还有var1可用作全局变量。10000毫秒后,它会调用本地var1还是全局var1? 最佳答案 这个:setTimeout('doSomething(var1)',10000);将传递全局变量var1,还有这个:setTimeout(function(){doSomething(var1);},10000);将传递局部变量var1。现场演示:http://jsfiddle.net/simevidas/EQMaz/

javascript - 为什么 JavaScript split() 使用不同的变量名会产生不同的输出?

以下是Chrome开发者控制台的一些代码和输出案例1:varmyarr=document.location.hostname.split(".");//typedundefined//outputmyarr[0]//typed"ptamz"//output:ONE案例2:varname=document.location.hostname.split(".");//typedundefined//outputname[0]//typed"p"//output:TWO为什么两个输出(注释Output:ONE和Output:TWO)不同?截图: 最佳答案

javascript - 全局变量只是 `window` 对象的属性吗?

每当我在浏览器上看到一个网站时,一个javascript实例正在运行。我可以在控制台(DevTools)中声明一个全局变量;vara=1234567890;此变量已在全局范围内声明,这样我就可以像这样获取变量的值;>a1234567890不过,我也可以这样做;>window.a1234567890我是否正确理解window对象是包含浏览器网站实例中所有全局变量的对象?如果是这样,窗口对象属于什么范围?这让我有点困惑;>windowWindow{top:Window,window:Window,location:Location,external:,...}>window.windowW

Javascript-变量提升

这是一个简单的片段,我只是不明白。下面的代码输出12,我明白了,因为varfoo=12;替换了之前的变量声明。varfoo=1;functionbar(){if(!foo){varfoo=12;}alert(foo);}bar();在下面的代码中,它警告1,这意味着在函数外部声明的变量在函数内部是可以访问的。varfoo=1;functionbar(){alert(foo);}bar();但是,在下面的代码中,为什么会提示undefined?我想,它会提醒1,我只是将之前声明的变量分配给新变量。varfoo=1;functionbar(){if(!foo){varfoo=foo;}al

javascript - 为什么在使用它之前在 Javascript 中声明一个变量不是必须的?

在Javascript中,我们不必在使用变量之前使用var关键字声明它。我们可以立即执行myCount=12;或myStr="Hello";(之前未声明myCount、myStr)。任何此类用法都在“全局”范围内声明和初始化变量。提供此功能的原因可能是什么?这是一个好的标准吗?更新:我的问题不是“在不声明的情况下使用变量”和“先声明然后使用”之间的区别是什么,以及它如何影响范围。我的问题是“为什么在javascript中允许直接使用变量而不声明它”,因为大多数编程语言对此都有严格的检查。更新:我认为以下引用的文字是此功能的不良影响。那么,为什么要有这个功能呢?“假设有一个全局声明的变量

javascript - setTimeout 有或没有匿名函数?有什么不同?

我使用了这段代码(后面跟着一个填充“tcap”文本区域的xmlhttprequest):st=setTimeout(checkme(),4000)checkme()是:functioncheckme(){if(typeof(st)!='undefined')clearTimeout(st)if(document.getElementById("tcap").innerHTML.length>0){document.getElementById('waitmsg').style.display='none'}else{st=setTimeout(checkme(),1000)}}如果我运

Javascript 为什么要在 IIFE 中包装变量或构造函数?

我今天看到这样的东西varVisualizer=(function(){functionVisualizer(){//...}Visualizer.prototype.function1=function(){/*...*/}//...returnVisualizer;})();varviz=newVisualizer();我不明白这样做与仅仅摆脱iife包装器相比有何意义。 最佳答案 您在此处展示的特定构造没有意义。在这种类型的构造中使用IIFE的原因是当您有需要声明的静态数据时,希望对您的对象可用,但不希望它可公开访问或干扰全局

Javascript:将多个参数作为单个变量传递

是否可以使用单个变量传递多个参数?例如,如果我想做类似的事情:functionfoo(x,y){document.write("Xis"+x);document.write("Yis"+y);}varbar="0,10";foo(bar);上面的例子是我试图做的一个简化例子。它不起作用(因为“bar”被检测为单个参数)。我知道有更简单的方法可以使用数组来实现这一点。所以,我问这个问题主要是出于好奇-是否有可能将“bar”变量检测为不是一个参数,而是2个参数?谢谢! 最佳答案 functionfoo(thing){document.w